<?php

namespace App\Helpers;

use App\Libraries\Log\Logger;

/**
 * 文件日志帮助类
 * @package App\Helpers
 */
final class LoggerHelper {

	/**
	 * 常用日志
	 * @var \App\Libraries\Log\Logger
	 */
	private static $logger;

	#region 写日志相关

	/**
	 * 开始事务
	 *
	 *
	 */
	static function begin() {
		self::_init();
		self::$logger->begin();
	}

	/**
	 * 提交的内部事务
	 *
	 *
	 */
	static function commit() {
		self::$logger->commit();
	}

	/**
	 * 回滚的内部事务
	 *
	 *
	 */
	static function rollback() {
		self::$logger->rollback();
	}

	/**
	 * 关闭日志
	 *
	 * @return bool
	 */
	static function close() {
		self::$logger->close();
	}


	/**
	 * 写信息发送到日志文件
	 *
	 * @param mixed $type
	 * @param mixed $message
	 * @param array $context
	 *
	 */
	static function log($type = 1, $message = null, $context = null) {
		self::_init();
		self::$logger->log($type, $message, $context);
	}

	/**
	 * 写一个调试消息发送到日志中
	 *
	 * @param string $message
	 * @param array $context
	 *
	 */
	static function debug($message, $context = null) {
		self::_init();
		self::$logger->debug($message, $context);
	}

	/**
	 * 写一个错误消息发送到日志中
	 *
	 * @param string $message
	 * @param array $context
	 *
	 */
	static function error($message, $context = null) {
		self::_init();
		self::$logger->error($message, $context);
	}

	/**
	 * 写一个普通消息发送到日志中
	 *
	 * @param string $message
	 * @param array $context
	 *
	 */
	static function info($message, $context = null) {
		self::_init();
		self::$logger->info($message, $context);
	}

	/**
	 * 写一个通知消息发送到日志中
	 *
	 * @param string $message
	 * @param array $context
	 *
	 */
	static function notice($message, $context = null) {
		self::_init();
		self::$logger->notice($message, $context);
	}

	/**
	 * 写一个警告消息发送到日志中
	 *
	 * @param string $message
	 * @param array $context
	 *
	 */
	static function warning($message, $context = null) {
		self::_init();
		self::$logger->warning($message, $context);
	}

	/**
	 * 写一个警报消息发送到日志中
	 *
	 * @param string $message
	 * @param array $context
	 *
	 */
	static function alert($message, $context = null) {
		self::_init();
		self::$logger->alert($message, $context);
	}

	/**
	 * 写一个紧急消息发送到日志中
	 *
	 * @param string $message
	 * @param array $context
	 *
	 */
	static function emergency($message, $context = null) {
		self::_init();
		self::$logger->emergency($message, $context);
	}

	/**
	 *
	 * 初始化日志类
	 * @param string $suffix 日志文件后缀
	 */
	private static function _init($suffix = "normal") {
		if (!isset(self::$logger)) {
			self::$logger = new Logger(Utils::configItem("log"), $suffix);
		}
	}

	#endregion


}